Presto-Hive Partitioning এবং Bucketing ব্যবহার

Database Tutorials - অ্যাপাচি প্রেস্টো (Apache Presto) Presto with Hive |
247
247

Presto-তে Hive সংযোগের মাধ্যমে বড় ডেটাসেটগুলির উপর কোয়েরি এক্সিকিউশন দ্রুততর এবং কার্যকরী করা সম্ভব। Hive তে Partitioning এবং Bucketing ব্যবহৃত হয় ডেটা শার্ডিং এবং স্পর্শকাতর কোয়েরি পারফরম্যান্স অর্জনের জন্য। Presto এ Hive Partitioning এবং Bucketing ব্যবহার করার মাধ্যমে কোয়েরির কার্যকারিতা উন্নত করা যায় এবং ডেটার মধ্যে আরো ভালো পারফরম্যান্স পাওয়া যায়।


Hive Partitioning:

Partitioning হল ডেটার বিভাজন যাতে ডেটা একাধিক ভাগে ভাগ করা যায়, এবং প্রতিটি ভাগ আলাদা ফাইল বা ডিরেক্টরিতে সংরক্ষিত থাকে। Hive Partitioning সাধারণত বড় ডেটাসেটগুলির জন্য ব্যবহৃত হয়, যেখানে কিছু কলামের মানের ভিত্তিতে ডেটাকে ভাগ করা হয় (যেমন, date, region, বা year ইত্যাদি)।

Presto তে Hive Partitioning ব্যবহার:

Presto তে Hive Partitioning ব্যবহার করার জন্য আপনাকে Hive তে একটি Partitioned Table তৈরি করতে হবে, এবং Presto এই পার্টিশনগুলির উপর কোয়েরি চালাবে। Partitioning মূলত filtering এবং pruning প্রক্রিয়া উন্নত করে, কারণ Presto সঠিক পার্টিশন গুলি নির্বাচন করে ডেটা প্রসেস করে।

Partitioning এর উপকারিতা:

  • ডেটা প্রক্রিয়াকরণ দ্রুততর: কোয়েরি করার সময় শুধুমাত্র প্রয়োজনীয় পার্টিশনগুলো স্ক্যান করা হয়, পুরো টেবিলটি নয়।
  • শক্তিশালী ফিল্টারিং এবং কোয়েরি অপটিমাইজেশন: Partitioning ফিল্টারিংয়ের কাজ দ্রুত করে।

Hive Partitioning Example:

  1. Hive Partitioned Table তৈরি:
CREATE TABLE orders (
    order_id INT,
    order_date DATE,
    amount DECIMAL
)
PARTITIONED BY (year INT, month INT);
  1. Hive Partition Data Insertion:
INSERT INTO orders PARTITION (year = 2022, month = 01)
VALUES (1, '2022-01-01', 100.00);
  1. Presto দিয়ে Hive Partition Query:

Presto দিয়ে partitioned Hive টেবিল থেকে কোয়েরি চালানোর সময় Presto সঠিক পার্টিশন থেকে ডেটা স্ক্যান করবে:

SELECT * FROM hive.default.orders WHERE year = 2022 AND month = 01;

এখানে Presto শুধুমাত্র year = 2022 এবং month = 01 পার্টিশন স্ক্যান করবে, পুরো টেবিল স্ক্যান করবে না।


Hive Bucketing:

Bucketing হল একটি টেকনিক যা ডেটাকে একটি নির্দিষ্ট সংখ্যক বাকেটে ভাগ করে। প্রতিটি বাকেট আলাদা ফাইল বা ডিরেক্টরিতে সংরক্ষিত থাকে এবং একটি কনস্ট্যান্ট ফাংশন (যেমন hash ফাংশন) ব্যবহার করে ডেটাকে বিভক্ত করা হয়। Bucketing সাধারণত JOIN এবং GROUP BY অপারেশনগুলোকে আরও দ্রুত করে।

Presto তে Hive Bucketing ব্যবহার:

Presto তে Hive Bucketing ব্যবহার করতে হলে, প্রথমে Hive তে Bucketed Table তৈরি করতে হবে, তারপর Presto ঐ Buckets এর উপর কোয়েরি চালাবে। Bucketing নির্দিষ্ট কলামের মানের ভিত্তিতে ডেটা ভাগ করে, এবং এটি JOIN বা GROUP BY অপারেশনগুলির পারফরম্যান্স উন্নত করে।

Bucketing এর উপকারিতা:

  • ডেটা শার্ডিং: Bucketing ডেটাকে সমান ভাগে বিভক্ত করে, যা বড় ডেটাসেটের জন্য কার্যকর।
  • JOIN অপ্টিমাইজেশন: Bucketing দ্রুত JOIN অপারেশন করতে সাহায্য করে, কারণ একাধিক টেবিলের মধ্যে একই বকেটের ডেটা দ্রুত একত্রিত হতে পারে।

Hive Bucketing Example:

  1. Hive Bucketed Table তৈরি:
CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    amount DECIMAL
)
CLUSTERED BY (customer_id) INTO 4 BUCKETS;

এখানে customer_id কলামের উপর Bucketing করা হয়েছে এবং ৪টি Bucket তৈরি করা হয়েছে।

  1. Hive Bucketed Data Insertion:
INSERT INTO orders
VALUES (1, 101, 100.00), (2, 102, 200.00), (3, 103, 150.00);
  1. Presto দিয়ে Hive Bucket Query:

Presto Bucketing সমর্থন করে, এবং এটি Buckets থেকে দ্রুত ডেটা প্রসেস করতে পারে। Presto দিয়ে Bucketing ব্যবহার করে কোয়েরি চালানো:

SELECT * FROM hive.default.orders WHERE customer_id = 101;

Presto, Hive Bucketing থেকে দ্রুত ডেটা সিলেক্ট করবে, কারণ customer_id Bucketing কলাম এবং ডেটা ঐ একই বকেটে রয়েছে।


Hive Partitioning এবং Bucketing এর মধ্যে পার্থক্য:

পার্থক্যPartitioningBucketing
ডেটা ভাগের ভিত্তিকলামের মানের ভিত্তিতে ডেটা ভাগ করা হয়।ডেটা একটি নির্দিষ্ট সংখ্যক বকেটে ভাগ করা হয়।
ডেটা অর্গানাইজেশনবিভিন্ন পার্টিশন (ফোল্ডার) হিসেবে অর্গানাইজ করা হয়।একটি কলাম ভিত্তিক ভিন্ন ভিন্ন ফাইল ফোল্ডারে বিভক্ত।
ব্যবহারসাধারণত বড় ডেটাসেটগুলির জন্য পারফরম্যান্স উন্নত করে।JOIN অপারেশন বা GROUP BY অপারেশন দ্রুত করে।
কোয়েরি অপটিমাইজেশনপার্টিশন ভিত্তিক ফিল্টারিং ও কোয়েরি অপটিমাইজেশন।Bucketing কলাম ব্যবহার করে দ্রুত JOIN অপারেশন।

Conclusion:

  • Hive Partitioning ডেটার বিশাল পরিমাণকে সুনির্দিষ্ট ভাগে বিভক্ত করে, যার মাধ্যমে কোয়েরি আরও দ্রুত এক্সিকিউট হয়, কারণ Presto শুধুমাত্র প্রয়োজনীয় পার্টিশনগুলো স্ক্যান করে।
  • Hive Bucketing ডেটাকে বিভিন্ন ভাগে বিভক্ত করে এবং এটি JOIN এবং GROUP BY অপারেশনকে দ্রুততর করতে সাহায্য করে। Bucketing কোয়েরি অপটিমাইজেশনকে আরও শক্তিশালী করে তোলে।

Presto-তে Hive Partitioning এবং Bucketing ব্যবহার করলে ডেটার প্রক্রিয়াকরণ এবং কোয়েরি এক্সিকিউশন পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion